Ngôn ngữ lập trình MATLAB

Ngôn ngữ lập trình dùng trong hệ tính toán số cũng có tên gọi là MATLAB. Nó thuộc kiểu lập trình thủ tục (với một số đặc điểm của lập trình hướng đối tượng mới được bổ sung trong các phiên bản gần đây.

Các kiểu dữ liệu

MatLab có đầy đủ các kiểu dữ liệu đơn giản như: số nguyên, số thực, ký tự, logic (boolean).

Chuỗi ký tự được đặt trong dấu nháy đơn hoặc nháy kép, chẳng hạn "Viet Nam".

Kiểu dãy (sequence) có dạng dau:buoc:cuoi bao gồm một véc-tơ gồm các phần tử bắt đầu từ số dau tăng dần theo từng buoc cho đến bằng (không vượt quá) số cuoi. Kết quả cho ra một véc-tơ hàng:

1.2:0.2:1.7 %chú thích: tương đương với [1.2 1.4 1.6]1.2:0.2:1.8 %chú thích: tương đương với [1.2 1.4 1.6 1.8]

Kiểu ma trận đóng vai trò trung tâm trong MatLab. Ví dụ một ma trận hai hàng ba cột như sau (hết một hàng cần dấu chấm phẩy để phân tách, nhưng không nhất thiết xuống dòng):

[ -3 4 5.2; 2.1  -8   7.6 ]

MatLab còn có một số kiểu dữ liệu khác cao cấp hơn: kiểu cell, kiểu struct (bản ghi).

Các phép tính với ma trận

Các phép cộng trừ hai ma trận cùng kích thước được thực hiện bình thường. Đặc biệt với phép nhân, MatLab phân biệt hai toán tử: * dành cho phép nhân ma trận và .* dành cho nhân từng cặp phần tử tương ứng của hai ma trận.

>> a = [2 3; 2 4]   2   3   2   4>> a * a % chính là bình phương ma trận A   10   18   12   22>> a.* a % chỉ là bình phương TỪNG PHẦN TỬ của A    4    9    4   16

Với phép tính lũy thừa cũng tương tự. Chẳng hạn, với ví dụ trên ta có thể viết lần lượt là a^2a.^2.

Cú pháp

Trước đây MatLab không phân biệt chữ in, chữ thường (giống như Fortran). Các phiên hơn gần đây lại có sự phân biệt này (theo ngôn ngữ C). Các từ khóa đều viết chữ thường.

  • Lệnh gán có dạng giống như nhiều ngôn ngữ lập trình khác: tên_biến = giá_trị_biểu thức. Thông thường máy sẽ in ra kết quả của biến sau khi gán, nếu ta không kết thúc lệnh gán bởi dấu ;

Ví dụ

t = 2 * 3 % hiện thị t = 6t = t + 1; % t có giá trị bằng 7 nhưng không hiển thị lên màn hình.
  • Khai báo hàm số (ví dụ như hàm bình phương tên tham số vào là x, tên tham số ra là y:
function y = binhPhuong(x)   y = x * x;end
  • Cấu trúc rẽ nhánh, lặp:
for i = 1:3 % chú ý rằng vòng lặp theo dạng dãy   disp(1/i)endi = 0while i < 4   i = i + 1;       % không cho hiển thị ra màn hình   disp(i)           % hiển thị giá trị iend

Cú pháp đặc biệt (syntactic sugar)

Để tăng tốc độ lập trình, nhất là thao tác từ dấu nhắc lệnh, MatLab cho phép nhiều kiểu cú pháp viết tắt. Chẳng hạn để xem hướng dẫn về lệnh plot thì hai câu lệnh sau là tương đương:

doc('plot')doc plot % chú thích: cách viết gọn, đồng thời bỏ dấu ngoặc tròn và dấu nháy

Một ví dụ nữa là các số trong một véc-tơ hàng không cần có dấu phẩy ngăn cách

v1 = [2, 3, 4]v2 = [5 6 7] % cũng hợp lệ!

Và ngay cả cách gọi file lệnh từ dấu nhắc cũng là một dạng rút gọn đặc biệt. Chẳng hạn ta cần chạy file tinhtong.m trong thư mục hiện hành:

>> tinhtong

Tính năng vẽ đồ thị

Vẽ đồ thị là một tính năng được trau chuốt trong MatLab; với rất nhiều kiểu đồ thị khác nhau như biểu đồ dạng đường, biểu đồ chấm điểm, các lớp màu (patch) hai chiều, đường đồng mức và các đường cong, mặt cong ba chiều. Ngoài ra MatLab còn cung cấp giao diện để người dùng trực tiếp biên tập hình vẽ, điền vào các ghi chú theo ý muốn.

Vẽ đồ thị dạng đường

Giả sử có dãy số liệu V đo theo thời gian t. Trong MatLab, V và t đều có dạng vec tơ có cùng độ dài. Khi đó lệnh vẽ đồ thị với trục hoành là t và trục tung là V có dạng:

plot(t, V)xlabel('t (s)') % viết tiêu đề các trụcylabel('V (m/s)')
Vẽ đồ thị dạng lớp màu

Một cách hiệu quả để biểu thị các trường vật lý trong không gian hai chiều là dùng lớp màu. Chẳng hạn T là một ma trận 2 chiều lưu giữ giá trị nhiệt độ của một tấm kim loại hình chữ nhật, thì việc hiển thị phân phối nhiệt độ bằng một lớp màu được thực hiện dễ dàng:

pcolor(T)
Vẽ trường vec tơ

Cũng như đồ thị lớp màu, việc hiển thị trường vec tơ rất cần thiết trong các ngành khoa học - vật lý. Để vẽ trường véc-tơ hai chiều của các ma trận u và v, dùng lệnh:

quiver(u,v)